const config_module = require('./config')
const Redis = require('ioredis');
// const RedisCli = Redis.createClient(config_module.redis_port,config_module.redis_host,{
//     auth_pass: config_module.redis_passwd
// })


const RedisCli = new Redis({
  port: config_module.redis_port,
  host: config_module.redis_host,
  password: config_module.redis_passwd
});

RedisCli.on("error",function(err){
    console.log("RedisCli connect error");
    // console.log("config_module:"+config_module.redis_host);
    // console.log("config_module:"+config_module.redis_port);
    // console.log("config_module:"+config_module.redis_passwd);
    RedisCli.quit();
});

async function GetRedis(key){
    try{
        const result = await RedisCli.get(key);
        if(result==null)
            {
                console.log('result:','<'+result+'>', 'This key cannot be find...');
                return null;
            }
            console.log('Result:','<'+result+'>','Get key success!...');
            return result;
    }catch(error){
        console.log('GetRedis error is', error);
        return null
    }

}

async function QueryRedis(key){
    try {
        const result = await RedisCli.exists(key);
        if(result==null){
            console.log('result:<','<'+result+'>','This key is null...');
            return null
        }
        console.log('Result:','<'+result+'>','Get key success!...');
        return result;
    } catch (error) {
        console.log('QueryRedis error is', error);
        return null
    }
}

async function SetRedisExpire(key,value,exptime){
    try {
        await RedisCli.set(key,value);
        await RedisCli.expire(key,exptime);
        return true;
    } catch (error) {
        console.log('SetRedisExpire error is', error);
        return false;
    }
}

function Quit(){
    RedisCli.quit();
}

module.exports = {Quit,SetRedisExpire,QueryRedis,GetRedis}